home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagd_f.zip
/
EXEC.SWG
/
0026_DOS Exec with full memory.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-03-03
|
1KB
|
54 lines
(*
> Can anyone post some code on swapping a TP (7.0) program out of
> memory and executing a batch file (or EXE file; show both if they're
> different please). Thanx. [I can do it in assembly... :)... but
> Pascal's a different story].
With this you must increase the maximum heap with {$M....}. But I found a
very good exec-Routine, which gives all the heap free before executing the
shell:
*)
Function DosShell(command:String):Integer;Var
OldHeapEnd,
NewHeapEnd: Word;
Error:Integer;
Begin
Error:=0;
If MemAvail<$1000 then Error:=8;
If Error=0 then Begin
NewHeapEnd:=Seg(HeapPtr^)-PrefixSeg;
OldHeapEnd:=Seg(HeapEnd^)-PrefixSeg;
asm
mov ah,4Ah
mov bx,NewHeapEnd
mov es,PrefixSeg
Int 21h
jnc @EXIT
mov Error,ax
@EXIT:
end; {asm}
If Error=0 then begin
SwapVectors;
Exec(GetEnv('COMSPEC'),command);
SwapVectors;
asm
mov ah,4Ah
mov bx,OldHeapEnd
mov es,PrefixSeg
Int 21h
jnc @EXIT
mov Error,ax
@EXIT:
end; {asm}
end; {If}
end; {If}
DosShell:=Error;
end; {Function}
Procedure LittleShellDemo;
Begin
DosShell(''); { a simple DOS-Shell }
DosShell('/c TEST.BAT'); { Start the batch-file TEST.BAT }
End;